#ifndef _ZR_GAME_H_
#define _ZR_GAME_H_

/**
 * getPanelState
 *
 * Assigns the array passed to the State of the Panel
 * [pos_x, pos_y, pos_z, orientation]
 *
 */
void getPanelState(float *panelState);

/**
 * getStationState
 *
 * Assigns the array passed to the State of the Station
 * [pos_x, pos_y, pos_z, orientation]
 *
 */
void getStationState(float *StationState);

/**
 * iHavePanel
 *
 * Returns true (1) only if you have the other team's Panel
 *
 */
unsigned char iHavePanel();

/**
 * otherHasPanel
 *
 * Returns true (1) only if the other team has your Panel
 *
 */
unsigned char otherHasPanel();

/**
 * isPanelFound
 *
 * Returns true (1) if the Panel is within the SPHERE's cone of sight
 *
 */
unsigned char isPanelFound();

/**
 * getPanelSide
 *
 * Returns the side that your panel is on.
 *
 * Returns 1 for positive X-axis, and -1 for negative X-axis.
 *
 */
float getPanelSide();

/**
 * isPanelInSync
 *
 * Returns true (1) if the Panel's cone of sight is within the SPHERE's own
 *
 */
unsigned char isPanelInSync();

/**
 * isStationInSync
 *
 * Returns true (1) if the StationZone's cone of sight is within the SPHERE's own
 *
 */
unsigned char isStationInSync();

/**
 * getCurrentScore
 *
 * Returns your current score
 *
 */
float getCurrentScore();

/**
 * getOtherCurrentScore
 *
 * Returns other SPHERE's current score
 *
 */
float getOtherCurrentScore();

/**
 * getPercentChargeRemaining
 *
 * Returns the remaining charge (0-100)
 *
 */
float getPercentChargeRemaining();

/**
 * getPercentFuelRemaining
 *
 * Returns the remaining fuel as a percentage of total (0-100)
 *
 */
float getPercentFuelRemaining();

/**
 * ZRRepel
 * 
 * Call this to repel the other satellite by a particular amount in the direction in which you are facing it.
 * Doing this will lower your charge. 
 *
 */
void ZRRepel();

/**
 * otherRepelling
 *
 * Call this to find out if you are being repelled by the other player.
 * Returns true (1) if you are being repelled, and False (0) otherwise.
 *
 */
unsigned char otherRepelling();


/**
 * outsideBoundary
 *
 * Returns 1 if the satellite has exited the interactions zone
 * Inputs:
 *		position	3-element satellite position vector
 */
unsigned char outsideBoundary(float position[3]);
#endif
